#菜单的自定义模板方法
from django.template import Library
from django.conf import settings
import copy

register = Library()
# inclusion_tag 方法编写菜单HTML片段代码
@register.inclusion_tag("tag/nb_menu.html")
def nb_menu(request):
    # 1 读取角色信息 需要html传参数 :{% nb_menu request %}
    role = request.nb_user.role
    print(role)
    # 2获取当前用户能够访问的菜单信息
    user_menu_list = copy.deepcopy(settings.NB_MENU[role]) #复制一份源文件 防止后面修改源文件导致要清空样式
    for i in user_menu_list:
        # 默认选中的父级标签收起
        # i['class'] = 'hide'
        for child in i['children']:
            # 如果访问的url等于列表中的url
            # if child['url']==request.path: #初级版本 不能实现访问根目录的子菜单时，选中菜单
            # 如果访问的NAME等于 保存的根目录的name
            if child['name'] == request.nb_user.menu_name:
                #在字典加一个属性class 为active的选中样式
                child["class"]= 'active'
                # 选中父级就打开
                # i['class'] = ''
    return {"menu_list": user_menu_list}